/**
 * @Copyright:Copyright (c) 1992 - 2016
 * @Company: TengTong
 */

package com.tengtong.duang.commons.base;

import java.util.Objects;

/**
 * 表示范围
 * 
 * @author Jai
 *
 */
public interface Range<T> extends Iterable<T>{

	/**
	 * 带抛出异常的 forEach
	 * 
	 * @param action
	 * @throws X
	 */
    default <X extends Throwable> void forEachException(ExConsumer<? super T, X> action) throws X{
        Objects.requireNonNull(action);
        for (T t : this) {
            action.accept(t);
        }
    }
    
    /**
	 * 范围的下界，也就是开始值
	 *
	 * @return
	 */
	public T getBegin();
	
	/**
	 * 范围的上界，也就是结束值
	 *
	 * @return
	 */
	public T getEnd();
}
